package com.example.private_auto_install.ftpGIt;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Properties;

/**
 * @Description: util
 * @Author: by
 * @Date: 2022-02-17
 **/
public class UtilMonitor {
    /**
     * @描述 获取配置文件的单个值   这个方法会转义， 舍弃当前方法，采用相对路径的方法
     * @Param param
     * @返回值 java.lang.String
     * @创建人-时间 by - 2022/2/21
     */
    public static String getProperties1(String param) {
        Properties prop = new Properties();
        // 使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = UtilMonitor.class.getClassLoader().getResourceAsStream("config.properties");
        // 使用properties对象加载输入流
        try {
            prop.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取key对应的value值
        String path = prop.getProperty(param);
        return path;
    }

    /**
     * @描述 获取配置文件的单个值   这个方法会转义， 舍弃当前方法，采用相对路径的方法
     * @Param param
     * @返回值 java.lang.String
     * @创建人-时间 by - 2022/2/21
     */
    public static String getProperties1(String param, String pathName) {
        Properties prop = new Properties();
        // 使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = UtilMonitor.class.getClassLoader().getResourceAsStream(pathName + ".properties");
        // 使用properties对象加载输入流
        try {
            prop.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取key对应的value值
        String path = prop.getProperty(param);
        return path;
    }

    /**
     * @描述 获取配置文件的单个值
     * @Param param
     * @返回值 java.lang.String
     * @创建人-时间 by - 2022/2/21
     */
    public static Properties getAllProperties(String name) {
        Properties prop = new Properties();
        // 使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = UtilMonitor.class.getClassLoader().getResourceAsStream(name + ".properties");
        // 使用properties对象加载输入流
        try {
            prop.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return prop;
    }

    /**
     * 读取目录下的所有文件
     *
     * @param dir 目录
     * @return
     */
    public static void findFileList(File dir, List<File> listFiles) {
        if (!dir.exists() || !dir.isDirectory()) {// 判断是否存在目录
            return;
        }
        String[] files = dir.list();// 读取目录下的所有目录文件信息
        for (int i = 0; i < files.length; i++) {// 循环，添加文件名或回调自身
            File file = new File(dir, files[i]);
            if (file.isFile()) {// 如果文件
                listFiles.add(file);// 添加文件全路径名
            } else {// 如果是目录
                findFileList(file, listFiles);// 回调自身继续查询
            }
        }
    }
}
